﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Interfaces;
using Dominio;

namespace Obligatorio1
{
    public partial class VentanaExpender : Form
    {
        private Surtidor Surtidor;
        private Manguera Manguera;
        
        public VentanaExpender(Surtidor UnSurtidor, Manguera UnaManguera)
        {
            InitializeComponent();
            this.Surtidor = UnSurtidor;
            this.Manguera = UnaManguera;
        }

        private void CargarClientes()
        {
            
            ICliente ic = new ImpICliente();
            clientesListBox.Items.Clear();
            List<Cliente> clientes = ic.ObtenerClientes();
            foreach (Cliente cliente in clientes)
            {
                clientesListBox.Items.Add(cliente);

            }
            
        }


        private void VentanaExpender_Load(object sender, EventArgs e)
        {
            fechaHoraDatetimepicker.Format = DateTimePickerFormat.Custom;
            fechaHoraDatetimepicker.CustomFormat = "dd-MM-yyyy hh:mm";  
            CargarClientes();

        }

        private void botonGuardar_Click(object sender, EventArgs e)
        {
            if (Validar())
            {
                ITanque tanques=new ImpITanque();
                Manguera unaManguera=this.Manguera;
                Cliente clienteSeleccionado = (Cliente)this.clientesListBox.SelectedItem;
                tanques.AgregarExpendidoAManguera(unaManguera, Int32.Parse(litrosTextBox.Text), fechaHoraDatetimepicker.Value, clienteSeleccionado, this.Surtidor);
                this.Hide();
                
            }

        }


        private bool Validar(){
            if(clientesListBox.SelectedIndex==-1){
                MessageBox.Show("Error. Por favor seleccione un cliente");
                return false;
            }
            if (litrosTextBox.Text == "")
            {
                MessageBox.Show("Error. Por favor ingrese la cantidad de litros a expender");
                return false;
            }
            int litros;
            if (!int.TryParse(litrosTextBox.Text, out litros))
            {
                MessageBox.Show("Error. Por favor ingrese un numero válido de digitos en la cantidad de litros a expender");
                return false;

            }
            if (Int32.Parse(litrosTextBox.Text) == 0)
            {
                MessageBox.Show("Error. Por favor ingrese una cantidad de litros mayor a 0");
                return false;

            }
            ITanque tanques = new ImpITanque();
            // COMPROBAR LA CAPACIDAD
            if (!tanques.EsCantidadDeLitrosAExpenderValida(Surtidor,Manguera,Int32.Parse(litrosTextBox.Text)))
            {
                MessageBox.Show("Error. La cantidad de litros a expender es mayor a la cantidad de litros disponibles");
                return false;
            }
            
            return true;
        }

        #region ClasesPrivadas

        private class MangueraInformacion
        {
            public int IdManguera { get; set; }
            public int CantidadLitros { get; set; }
            public String TipoCombustible { get; set; }
            public MangueraInformacion(int idManguera, int cantidadLitros, string tipoCombustible) {
                this.IdManguera = idManguera;
                this.CantidadLitros = cantidadLitros;
                this.TipoCombustible = tipoCombustible;
            }

            public override string ToString()
            {
                StringBuilder stringBuilder = new StringBuilder();
                stringBuilder.Append(this.TipoCombustible);
                stringBuilder.Append(" | ");
                stringBuilder.Append(this.CantidadLitros);
                return stringBuilder.ToString();
            }
        }
        #endregion

    }
}
